HTTP (Hypertext Transfer Protocol) es un protocolo para el intercambio de información utilizando páginas web. Recordando el modelo TCP/IP, donde se diferencian diferentes niveles: físico, enlace, red, transporte y aplicación, el protocolo HTTP pertenece a la capa de aplicación.
Para localizar un recurso de manera unívoca en la red, se utilizan URLs (Uniform Resource Locator) localizador de recursos uniforme.
Para especificar URLs se pueden utilizar diferentes protocolos: HTTP, HTTPS, FTP, etc.
En relación con las URLs podemos diferenciar dos conceptos:
URI (Uniform Resource Identifier) Identificador de Recursos Uniforme: es una cadena de caracteres que identifica los recursos de una red de forma unívoca. Puede entenderse como un localizador.
URN (Uniform Resource Name) Nombre de Recurso Uniforme: funciona de manera similar al URL, pero únicamente permite identificar recursos sin indicar cómo acceder.

HTTP es un protocolo basado en la arquitectura cliente–servidor utilizando el navegador web. Normalmente el navegador envía un mensaje y el servidor responde en consecuencia a ese mensaje.
Se pueden diferenciar dos tipos de mensajes:
Mensajes de petición.
Mensajes de respuesta.
A la hora de intercambiar mensajes entre el cliente y el servidor existen diferentes métodos de petición:
GET: se utiliza la URL para realizar la petición del recurso seleccionado.
POST: indica al servidor que el mensaje irá en el cuerpo del mensaje.
HEAD: es equivalente al GET pero no se devuelve el mensaje sino solo las cabeceras.
Los mensajes que intercambian el cliente y el servidor tienen unos códigos de estado que indican si la petición ha sido aceptada o no.
1xx. mensaje de información.
2xx: resultado correcto.
3xx: redirección.
4xx: error de cliente.
5xx: error del servidor.

El protocolo HTTP carece de información de estado por lo que, a priori, ni el cliente ni el servidor conocen el estado en el que se encuentra la operación. Para gestionar estos estados se utiliza un sistema de almacenamiento externo que recibe el nombre de cookies.
Una cookie es un conjunto de datos que guarda el estado de la petición.
Consultándolas, el servidor puede saber qué servicios puede ofrecer al cliente.
Además las cookies permiten realizar un seguimiento de la navegación de los usuarios.
Podemos distinguir dos tipos de cookies:
Origen: las crea y habilita el sitio que estamos visitando.
Third-party: las crean sitios diferentes al que estamos visitando, por ejemplo empresas de publicidad.
Atendiendo al tipo de almacenamiento de las cookies se pueden diferenciar:
Cookies de sesión.
Cookies persistentes.
Los usos más comunes de las cookies son:
Guardar información de la sesión.
Personalización de las páginas web, por ejemplo, para el idioma.
Seguimiento de las visitas web.
Comercio electrónico.
Una de las ventajas de las cookies es la liberación de las operaciones que debe realizar el servidor. Desde el punto de vista de la seguridad, las cookies son ficheros de textos que en principio no pueden realizar ninguna tarea y no pueden obtener información de un dispositivo. Sin embargo, con malas intenciones se puede extraer su información.
Existen diferentes formas de implementar las sesiones en el protocolo HTTP:
A través de cookies.
Aumentado el tamaño de las URL.
Utilizando campos ocultos.
Las conexiones persistentes son aquellas que permiten que varias peticiones y respuestas utilicen la misma conexión TCP. Se utilizan por defecto en el protocolo HTTP 1.1. Toda aquella conexión que esté inactiva durante 30 segundos se cerrará por parte del servidor.
La principal ventaja de las conexiones persistentes es la reducción del número de conexiones. Esto se traduce en una reducción de los retrasos y gastos de memoria.
Un sistema criptográfico permite realizar transmisiones seguras entre cliente y servidor. El cifrado se centra en aplicar algoritmos sobre el mensaje original para obtener el mensaje cifrado.
Se pueden distinguir dos grupos diferentes de cifrados:
Clave simétrica. Son aquellos en los que la clave de cifrado y descifrado coinciden. Para ello, esta clave ha de ser mantenida en secreto y el emisor y el receptor deben acordarla previamente. Como emisor y receptor comparten la misma clave, existe un problema para distribuir las claves.

Clave asimétrica. Son aquellos en los que la clave de cifrado (pública) y descifrado (privada) son diferentes. La llave de cifrado es pública, mientras que la de descifrado es secreta y conocida únicamente por su propietario. Los dos elementos relevantes en este cifrado son el certificado digital y la firma electrónica.

El protocolo HTTPS utiliza protocolos seguros como SSL/TLS para crear conexiones seguras entre el cliente y el servidor. Como el proceso de cifrado mediante claves asimétricas es muy lento, no se puede utilizar en la comunicación web. En su lugar HTTPS utiliza la combinación de clave asimétrica (SSL, Secure Sockets Layer) y simétrica (TLS, Transport Layer Security).